package datapackage

//DataTable 二维数据表格
type DataTable struct {
	Name         string      `xml:"name,attr"`
	Caption      string      `xml:"caption,attr"`
	PrimaryKeies string      `xml:"primaryKeies,attr"` //主键，多个以逗号隔开
	Type         string      `xml:"type,attr"`
	Columns      []Column    `xml:"Column"`
	Params       []Parameter `xml:"Parameter"`
	ShortName    string      `xml:"shortName"`
}

//Column 表格中的列
type Column struct {
	Name     string `xml:"name,attr"`
	Caption  string `xml:"caption,attr"`
	DataType string `xml:"dataType,attr"`
	Index    string `xml:"index,attr"`
}

//Join 两个表格之间的关联
type Join struct {
	From       string      `xml:"from,attr"`
	To         string      `xml:"to,attr"`
	ColumnMaps []ColumnMap `xml:"ColumnMap"`
	Type       string      `xml:"type,attr"` //类型 inner,left,right
	Base       string      `xml:"base,attr"` //基数 1:1,1:n,n:1
}

//ColumnMap 字段映射
type ColumnMap struct {
	FromKey string `xml:"fromKey,attr"`
	ToKey   string `xml:"toKey,attr"`
}

//Relationship DataTable之间的关系
type Relationship struct {
	Joins []Join `xml:"Join"`
}

//DataTableSet 一组DataTable
type DataTableSet struct {
	Name       string      `xml:"name,attr"`
	Caption    string      `xml:"caption,attr"`
	DataTables []DataTable `xml:"DataTable"`
}

//Parameter 数据源参数（用于存储过程）
type Parameter struct {
	Index   int    `xml:"index,attr"`
	Name    string `xml:"name,attr"`
	Caption string `xml:"caption,attr"`
	Type    string `xml:"type,attr"`
}
